/**
 * jQuery 下给页面元素提供以插件方式的组件
 * Author John Fang 2018-10-14
 * 
 */
 
 /**
  * 菜单功能条控制器，根据用户权限显示菜单功能条上的功能
  */
 jQuery.fn.functionBarController = function(id){
	 var _bar = $(this).find(".funcbar");
	 var _m = UFS[id];
	 if(_bar && _m){
		var _fs = _bar.find("span");
		for(i=0;i<_fs.length;i++){
			//查看详细和查询功能不受授权影响
			if(!$(_fs[i]).attr("class") || $(_fs[i]).attr("class")== 'detail') continue;
			
			_permit = _m.permit+":"+$(_fs[i]).attr("class");
			if(getMenuByPermit(_permit)==null){
				$(_fs[i]).hide();
			}else{
				$(_fs[i]).show();
			}
			
		}
	 }
 }
 
/**
 * 填充列表数据
 */
jQuery.fn.fillListData = function(res){
	
	var _p = $(this);
	//alert(_p.attr("id"));
	_p.find("tbody").empty(); //清空列表数据
	_p.find(".pagination").empty(); //清空分页数据。
	
	//查询条件数据
	if(res.searchs){
		for( key in res.searchs){
			var _ie = _p.find(".searchform").findInputElement(key);
			if(_ie && res.searchs[key].length>0){
				var _sv = _ie.val(); //当前被选中的值
				if( _ie.prop('tagName')=='SELECT'){
					//select
					_ie.find("option[value!='']").remove().end();
					for(var x=0;x<res.searchs[key].length;x++){
						var cv = res.searchs[key][x].value;
						var cs = "";
						if(_sv!='' && cv == _sv) cs = " selected";
							
						_ie.append("<option value='"+cv+"'"+cs+">"+res.searchs[key][x].name+"</option>");
					}
				}
			}
		}
	}
	
	if(res.data && res.data.rowItems){
		
		var colsname = _p.find("thead>tr>th"); //获取表头
		
		for(i=0;i<res.data.rowItems.length;i++){
			var row = $("<tr></tr>");
			row.appendTo(_p.find("tbody"));
			
			for(j=0;j<colsname.length;j++){
				o = $(colsname[j]);
				if(o.attr("field")=='') continue;
				if(o.find("input").length>0){
					row.append("<td><input type=\""+o.find("input").attr("type")+"\" name=\""+o.attr("field")+"\" value=\""+showNull(res.data.rowItems[i][o.attr("field")])+"\"></td>");
				}else
					row.append("<td>"+showNull(res.data.rowItems[i][o.attr("field")])+"</td>");
				
			}
			
		}
		if(res.data.rowItems.length<1){
			row = $("<tr></tr>");
			row.appendTo(_p.find("tbody"));
			row.append("<td colspan='"+colsname.length+"'>没有查询到符合条件的数据！</td>");
		}
		
	}else{
		row = $("<tr></tr>");
		row.appendTo(_p.find("tbody"));
		row.append("<td colspan='"+colsname.length+"'>没有查询到符合条件的数据！</td>");
	}
	if(res.total && res.pageSize){
		//填充分页。
		buildPagination(_p.find(".pagination"),res.total,res.pageSize,res.page);
	}
	
}
/**
 * 填充详细页面数据。
 */
jQuery.fn.fillDetailData = function(res){
	if(res.code!=200){messageBox(res.msg); return;}
	var _p = $(this);
	_p.find("input[readonly='false']").val("");
	
	if(res.data){
		for(key in res.data){
			var _ie = _p.findInputElement(key);
			if(_ie){
				if(_ie.prop('tagName')=='SELECT'){
					
					if(res[key]){ //更新下拉选项
						//清理旧的选项。
						if(_ie.find("option[value!='']").length>1){
							_ie.find("option[value!='']").remove().end();
						}
						for(i=0;i<res[key].length;i++){
							_ie.append("<option value='"+res[key][i].value+"'"+(res[key][i].value== res.data[key]? "selected":"")+">"+res[key][i].name+"</option>").end();
						}
					}else{
						_ie.find("option[value='"+res.data[key]+"']").prop("selected",true);
					}
				}else if(_ie.prop('tagName')=='INPUT' && (_ie.prop("type")=='checkbox' || _ie.prop("type")=='radio')){
					_type = _ie.prop("type");
					if(res[key]){
						var _up = _ie.parents(".ta-outline");
						_up.empty().end();
						for(i=0;i<res[key].length;i++){
							_up.append("<span class='input-item'> <input type='"+_type+"' value='"+res[key][i].value+"'"+(res[key][i].value== res.data[key]? "checked":"")+">"+res[key][i].name+"</span>").end();
						}
					}else{
						_ie.prop('checked',false);
						if(_type=='radio')
							_ie.find("[valu='"+res.data[key]+"']").prop('checked',true);
						else {
							if(res.data[key].length>1){
								
							}
						}
					}
				}else{
					if(res[key] && _ie.prop("disabled")){
						for(i=0;i<res[key].length;i++){
							if(res.data[key] == res[key][i].value){
								_ie.val(res[key][i].name);
								break;
							}
						}
					}else
					_ie.val(res.data[key]);
				}
				
			}
		
		}
	}

}
/**
 * 获取元素的工作区间的Tab元素
 */
jQuery.fn.getParentTab = function(){
	return $(this).parents("div.tab-pane");
}
/**
 * 获取子孙元素中符合名称的输入元素。
 * @param name 输入元素的名称
 * @return 返回jQuery对象或者数组，如果找不到元素返回null
 */
jQuery.fn.findInputElement = function(name){
	if(!name || name=='') return null;
	var _e = $(this).find("input[name='"+name+"']");
	if(_e.length>0) return _e;
	_e = $(this).find("select[name='"+name+"']");
	if(_e.length>0) return _e;
	_e = $(this).find("textarea[name='"+name+"']");
	if(_e.length>0) return _e;
	
	return null;
}


